אני עובד על אתר כל שהוא,
והגעתי למצב שבו אני צריך לשלוח נתונים מטופס, לפונקצייה..
הקוד של הפונקצייה הוא כזה:
קוד PHP:
{
$my_var = iconv('Windows-1255', 'UTF-8', $my_var);
header('Content-Type: text/html; charset=windows-1255');
$to = $this->site['email'];
$subject = 'SUBJECT';
$message = '
<body dir="rtl">
<div style="float: right;">
<b>שלום, לך מנהל יקר,</b><br />
הגיע פנייה מאתרך '.$this->site['name'].'<br /><br />
<b>פרטים על הפנייה: </b><br />
<b>שם מלא: </b>'.$fullname.'<br />
<b>אימייל: </b>'.$email.'<br />
<b>טלפון: </b>'.$phone.'<br />
<b>נושא הפנייה: </b>'.$xsubject.'<br />
<b>תוכן הפנייה: </b>'.$xbody.'<br /><br />
<b>בברכה, מערכת '.$this->site['name'].' - '.$this->site['salogan'].'</b>
</div>
</body>
';
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=".$this->site['charset']."" . "\r\n";
$headers .= 'From: <'.$this->site['email'].'>' . "\r\n";
$mail = mail($to, $subject, $message, $headers);
return $mail;
}
קוד השליחה אל הפונקצייה:
קוד PHP:
האימייל שאני מקבל:
דרך אגב, הכל פה ב OOP, ככה שלא יהיה בעיות..
מה אני עושה?!?
האימייל נשלח לי בשפה מוזרה כזו: ׳ ׳ ׳™ ׳¨׳•׳¦׳” ׳‘׳ ׳™׳™׳” ׳ ׳ ׳×׳¨..
מה עושים?!
13 תשובות
בשביל מה כל המניפולציות האלה עם קידוד?
תעבוד רק עם utf-8 ולא יהיו לך בעיות
בשורה הבאה:
המשתנה site['charset'] מכיל את utf-8 .
וסתם ככה כל האתר בנוי על utf-8, הבעיה היא כאן ספציפית.
(דרך אגב, אני עושה כל מני מוניפולציות, מכיוון שאני עושה דף הגדרות באתר, כלומר:
שאני יוכל להגדיר הכל דרך פאנל שזה כולל קידוד האתר..
ולכן אני צריך כל מני מוניפולציות.)
אפשר תשובה יותר טובה?
אם כל האתר בנוי על utf-8 בשביל מה פה ה iconv הזה
וה header עם קידוד אחר ?
אל תיתן למשתמש להגדיר קידוד. אין לו בשביל מה להגדיר אותו. utf-8 עובד עם כל השפות.
אז אתה אומר להוריד headers ? אבל אל תשכח שאני רוצה להגדיר שזה יהיה ב HTML, ושיהיה form...
מה אתה מציע?
למה המשתנה my_var משמש?!
למה מתחת למשתנה הזה אתה מגדיר קידוד כwindows-1255 ? תעבוד עם הקידוד הקבוע של האתר ($this->site['charset'])
ההדר (שבשורה הרביעית) צריך להיות בראש כל עמוד \ עמוד שמאונקלד בכל עמוד כמו קונפיג או משהו כזה . לא צריך כל פונקציה לדחוף את זה ...
כל האתר על אותו קידוד(utf-8), אבל בכל זאת זה לא שולח נתונים בפונקציה בעברית, יכול להיות שאני צריך להגדיר משהו אחר בשביל לקבל עברית בשליחת נתונים?
כי כשאני נמצא בעמוד שליחת הטופס, ואני מדפיס את נתוני הטופס, הם בעברית מלאה, אך שזה עובר לפונקצייה, זה הופך להיות לג'יבריש כזה :S
מה עושים?
מעיפים קיביני מט כל מה שקשור לקידוד ועובדים עם utf-8.
function send_support_email($fullname, $email, $phone, $xsubject, $xbody)
{
$to = $this->site['email'];
$subject = 'SUBJECT';
$message = '
<body dir="rtl">
<div style="float: right;">
<b>שלום, לך מנהל יקר,</b><br />
הגיע פנייה מאתרך '.$this->site['name'].'<br /><br />
<b>פרטים על הפנייה: </b><br />
<b>שם מלא: </b>'.$fullname.'<br />
<b>אימייל: </b>'.$email.'<br />
<b>טלפון: </b>'.$phone.'<br />
<b>נושא הפנייה: </b>'.$xsubject.'<br />
<b>תוכן הפנייה: </b>'.$xbody.'<br /><br />
<b>בברכה, מערכת '.$this->site['name'].' - '.$this->site['salogan'].'</b>
</div>
</body>
';
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8\r\n";
$headers .= 'From: <'.$this->site['email'].'>' . "\r\n";
$mail = mail($to, $subject, $message, $headers);
return $mail;
}
אלכס, הבעיה היא לא בקידוד האימייל, הבעיה היא בשליחת הנתונים כאן:
מכיוון שכשולחים את האימייל, מה שאני כתבתי בתוך האימייל עצמו בעברית, ורק השליפות הם בג'יבריש.
צריך לפתור את הבעיה בשליפה של הנתונים..
התקדמנות. מסתבר שלכל הסיפור של האיימייל אין קשר לבעיה.
הבעיה בעצם בשליפה מהמסד נתונים. נכון?
יש אחלה מדריך באתר שמסביר מה חמשת הדברים שצריך לעשות בשביל שהקידוד יעבוד כמו שצריך.
בונוס: אם תשים לב, הוא לא כולל שום דבר על iconv במקומות שונים
אפשר קישור למדריך?
חח, נכנסתי לזה הרגע.. לא עובד :P
אפשר עוד עזרה?